import logging.handlers
import logging


def init_log_config(filename, when="midnight", interval=1, backup_count=7):
    # 创建日志对象
    logger = logging.getLogger()
    # 设置日志打印等级
    logger.setLevel(logging.DEBUG)

    st = logging.StreamHandler()

    # 3.2 创建 输出到日志文件 处理器对象
    fh = logging.handlers.TimedRotatingFileHandler(filename, when=when, interval=interval,
                                                   backupCount=backup_count, encoding='utf-8')
    # when 字符串，指定日志切分间隔时间的单位。midnight：凌晨：12点。
    # interval 是间隔时间单位的个数，指等待多少个 when 后继续进行日志记录
    # backupCount 是保留日志文件的个数
    # 4. 创建日志信息格式
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
    formatter = logging.Formatter(fmt)

    # 5.1 日志信息格式 设置给 控制台处理器
    st.setFormatter(formatter)

    # 5.2 日志信息格式 设置给 日志文件处理器
    fh.setFormatter(formatter)

    # 6.1 给日志器对象 添加 控制台处理器
    logger.addHandler(st)

    # 6.2 给日志器对象 添加 日志文件处理器
    logger.addHandler(fh)


if __name__ == '__main__':
    # 初始化日志
    init_log_config('b.log', interval=3, backup_count=5)
    # 打印输出日志信息
    logging.debug('xxx - 日志信息')
